package com.smart.community.property.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 物业信息更新DTO
 * 用于物业公司信息的更新操作
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 * @version 1.0.0
 */
@Data
@Schema(description = "物业信息更新DTO")
public class PropertyInfoDTO {

    @Schema(description = "物业公司ID")
    private Long propertyCompanyId;

    @Schema(description = "公司名称")
    @NotBlank(message = "公司名称不能为空")
    @Size(max = 100, message = "公司名称长度不能超过100个字符")
    private String companyName;

    @Schema(description = "公司代码")
    @Size(max = 50, message = "公司代码长度不能超过50个字符")
    private String companyCode;

    @Schema(description = "统一社会信用代码")
    @Size(max = 50, message = "统一社会信用代码长度不能超过50个字符")
    private String creditCode;

    @Schema(description = "营业执照号")
    @Size(max = 50, message = "营业执照号长度不能超过50个字符")
    private String businessLicense;

    @Schema(description = "法定代表人")
    @Size(max = 50, message = "法定代表人长度不能超过50个字符")
    private String legalRepresentative;

    @Schema(description = "成立日期")
    private LocalDate establishedDate;

    @Schema(description = "注册资本")
    private BigDecimal registeredCapital;

    @Schema(description = "资质等级")
    @Size(max = 20, message = "资质等级长度不能超过20个字符")
    private String qualificationLevel;

    @Schema(description = "联系人")
    @Size(max = 50, message = "联系人长度不能超过50个字符")
    private String contactPerson;

    @Schema(description = "联系电话")
    @Size(max = 20, message = "联系电话长度不能超过20个字符")
    private String contactPhone;

    @Schema(description = "联系邮箱")
    @Size(max = 100, message = "联系邮箱长度不能超过100个字符")
    private String contactEmail;

    @Schema(description = "公司邮箱")
    @Size(max = 100, message = "公司邮箱长度不能超过100个字符")
    private String email;

    @Schema(description = "公司地址")
    @Size(max = 200, message = "公司地址长度不能超过200个字符")
    private String address;

    @Schema(description = "营业时间")
    @Size(max = 100, message = "营业时间长度不能超过100个字符")
    private String businessHours;

    @Schema(description = "服务热线")
    @Size(max = 20, message = "服务热线长度不能超过20个字符")
    private String serviceHotline;

    @Schema(description = "服务范围")
    @Size(max = 500, message = "服务范围长度不能超过500个字符")
    private String serviceScope;

    @Schema(description = "服务区域")
    @Size(max = 200, message = "服务区域长度不能超过200个字符")
    private String serviceArea;

    @Schema(description = "服务社区数量")
    private Integer serviceCommunityCount;

    @Schema(description = "服务户数")
    private Integer serviceHouseholdCount;

    @Schema(description = "服务面积")
    private BigDecimal serviceAreaSize;

    @Schema(description = "支付账户")
    @Size(max = 100, message = "支付账户长度不能超过100个字符")
    private String paymentAccount;

    @Schema(description = "备注")
    @Size(max = 500, message = "备注长度不能超过500个字符")
    private String remark;

    @Schema(description = "公司Logo图片信息，JSON格式存储多个文件信息")
    private String companyLogo;

    @Schema(description = "收款二维码图片信息，JSON格式存储多个文件信息")
    private String paymentQrCode;

    @Schema(description = "公司简介")
    @Size(max = 1000, message = "公司简介长度不能超过1000个字符")
    private String introduction;

    @Schema(description = "公司描述")
    @Size(max = 1000, message = "公司描述长度不能超过1000个字符")
    private String description;

    @Schema(description = "支付银行")
    @Size(max = 100, message = "支付银行长度不能超过100个字符")
    private String paymentBank;

    @Schema(description = "在线支付链接")
    @Size(max = 500, message = "在线支付链接长度不能超过500个字符")
    private String paymentLink;

    @Schema(description = "微信支付商户号")
    @Size(max = 50, message = "微信支付商户号长度不能超过50个字符")
    private String wechatPayMerchantId;

    @Schema(description = "支付宝商户号")
    @Size(max = 50, message = "支付宝商户号长度不能超过50个字符")
    private String alipayMerchantId;
}
